package com.chentongwei.spring.annotation.scope.config;

import com.chentongwei.spring.annotation.scope.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

/**
 * @author TongWei.Chen 2018-07-03 10:02:49
 * @Description:
 * @Project spring-annonation
 */
@Configuration
public class MainConfig {

    /**
     * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE
     * @see ConfigurableBeanFactory#SCOPE_SINGLETON
     *
     * prototype：多实例的：ioc容器启动并不会去调用方法创建对象放在容器中，每次获取的时候才会调用方法去创建对象。
     * singleton：单实例的（缺省值）：ioc容器启动会调用方法去创建对象放到ioc容器中，以后每次获取就是直接从容器（map.get()）中拿。
     * request：同一次请求创建一个实例
     * session：同一个session创建一个实例
     *
     * @return
     */
    @Scope("prototype")
    @Bean("user")
    public User user() {
        System.out.println("给容器中添加user....");
        return new User("张三", 28);
    }
}
